Rigging

Blender Abbreviations

  • ROOT, MASTER - first bone in hierarchy or sub-hierarchy (tentacle_root)

  • DEF - bone contributing to deformation

  • MCH - mechanism/mechanical helper bone

  • ORG - original bones of metarigs from which the final rig is generated

  • CTRL, CON - control bones - various bones meant to be operated by animators

  • JNT - a joint

  • WGT, SHP, CS - widget, shape, custom shape, etc. - meshes to represent bones

  • IK, FK - bones belonging to inverse or forward kinematic bone chains

  • STR, NSTR, ASTR - stretch bones, non-stretch bones, anti-stretch bones (I've also seen SCA, NSCA, ASCA as scale, non-scale and anti-scale)

  • SPL - IK spline bones

  • MM, MUSC - muscle mass, muscle - bones to represent and bind muscles

  • POLE - IK pole bones, also usually just marked as CTRL

  • CW, CCW - clock-wise, counter-clock-wise, for marking rotation direction or bones for hinges

  • CEN, LFT, RGT, LF, RT, L, R - center, left, right

Rigfy Addon

  • Rigfy Addon .

  • The addon only creates Rigs using Meta-rigs or Meta-rig Samples.

    • Meta-rigs are special for the addon, since each Bone that makes up a Meta-rig has properties defined in the 'Rigfy Type' tab when checking the Bone in Pose Mode.

  • It is not crucial that the Meta-rig be repositioned correctly and re-scaled, but it is important to ensure the proper functioning of the new rig generated.

  • Settings for creating the Rig:

    • Armature -> Rigfy:

      • 'Advanced':

        • Nothing too relevant, just things related to rig overrides and rig regeneration.

      • 'Samples':

        • Useful for creating your own metarigs without using the base presets. You can assemble your own metarig like 'Lego pieces'.

    • Bones -> Rigfy Type (only in Pose Mode):

      • Bones of Meta-rigs and Samples have predefined information here; this is what makes these Bones special.

      • Special information can be defined for Bones in this tab, but it sounds advanced; I imagine it is useful for defining IK generation information, such as Chain Length.

      • The information for each "type" is explained in the documentation.

  • Settings after creating the Rig:

    • The Rigfy interface in the Armature Data tab disappears when the rig is created.

    • A new interface in the 'tab to the right of the Gizmo' appears when the rig is created. This interface provides options to:

      1. Change the visibility of Bone layers.

      2. When selecting some Bones in Pose Mode, it is possible to change important properties for each of these bones.

  • Characteristics of the Rigify Addon:

    • Outliner -> Properties:

      • Object tab:

        • In Custom Properties, there is an indicator for the 'rig_ui.py' script, important for the visualization and functioning of the Rigify Item tab in the View3D.

      • Data tab (Armature):

        • In Custom Properties, there is a series of numbers and letters indicating the 'rig_id'. I don't know what it is used for.

      • Bone tab:

        • There will be Custom Properties depending on the selected Bone.

          • algo_parent (red gear):

            • Various things.

          • algo_tweak (blue dots):

            • The dots on the limbs have the 'rubber tweak' property.

            • The dots on the torso, pelvis, and shoulders have nothing.

          • ~ (yellow controllers):

            • Nothing, except for the Torso, which has some.

          • algo_ik (red controllers):

            • Nothing.

          • algo_fk (green or blue):

            • Nothing.

    • Item tab:

      • Only works if the 'rig_ui.py' script is enabled to run in Blender.

      • IK Stretch:

        • Configures if the mesh will stretch when the IK controller goes far.

      • IK->FK (name):

        • Configures if this rig member is controlled by IK or FK.

          • A value of 0 means it is controlled by IK.

          • A value of 1 means it is controlled by FK.

        • Note the name, because sometimes more than one red controller uses the same configuration, so disabling one automatically disables the other.

Game Rig Tools Addon

  • Game Rig Tool Addon: Explanation of functionalities .

    • I don't know if this addon is useful/relevant for Game Dev.

  • Game Rig Tools Addon: Explanation .

    • I don't know if I should or if it is necessary to use this workflow for Deformation Rig export.

      • I feel that due to the way Rigify defines its DEF Bones hierarchy, this addon is not necessary.

  • Characteristics of the Game Rig Tools Addon:

    • Control Rig:

      • It's the Rigify rig.

    • Game Rig:

      • Blank for the 'Game Rig generation'. The generated Game Rig will automatically occupy this slot.

    • Workflow for generating a Proxy Rig from a Rigify Rig and linking the two Rigs:

      • Generate Game Rig:

        • Using the preset I created, called 'Rig Proxy'. The following changes were made:

          • Hierarchy:

            • Selected: Rigify Hierarchy Fix.

            • Disabled: Disconnect Bones.

          • Constraints:

            • Selected: None.

          • Extract:

            • Select.

          • Binding:

            • Disabled: Bind to Game Rig.

              • This option changes the target of the Control Rig's 'Armature modifier' to the Game Rig. Should not be used, doesn't make sense here.

          • Advanced:

            • Disabled: Move Bones to Collection.

      • Constraints to Armature Name:

        • Makes the 'From' Rig have constraints associated with the 'Source' Rig. That is, the 'From' Rig now follows the movement of the 'Source' Rig.

        • From:

          • Rigify Rig.

        • Source:

          • Rig Proxy.

        • Constraint:

          • Copy Transform (did not test other options).

        • Clear constraint:

          • ~Leave this deactivated, unsure.

Methods

Workflow: Rokoko
  • Rokoko Addon .

  • Retargeting: Rokoko Addon (1) .

  • Retargeting: Rokoko Addon (2) .

  • Information:

    • The act of Retargeting an animation only creates a copy of the animation with the Bones having their target changed. It is a non-destructive process.

    • Animations created as a result of Retargeting already have a Fake User, meaning they are marked to be 'saved' by Blender.

  • IK influence must be set to 0 BEFORE Retargeting; otherwise, the animation will be very wrong.

  • With Auto Scale, as long as the Source Rig is basically the same size as the Rigify Rig, slightly larger; I like to align the base of the spine.

    • This is somewhat questionable.

Methods to solve differences between Source and Target Bones.
  • Any origin Armature:

    1. Do not Retarget this Bone.

      • For this, just leave the "output" empty for this Bone's Retargeting.

      • This may generate slight animation inaccuracies, requiring manual corrections for this Bone.

      • This often happens unintentionally, e.g., when Retargeting from Human -> Dinosaur, etc.

    2. Retarget this Bone, ignoring functional differences between Bones.

      • For this, just normally fill the "output" for this Bone's Retargeting.

      • This may generate slight animation inaccuracies, requiring manual corrections for this Bone.

  • Rigify origin Armature:

    1. Edit the Rigify Armature during generation so that the Pivot Position matches behavior between Armatures.

      • Select 'spine' Bone -> Rigify Type -> Pivot Position -> change from 2 to 1.

      • This makes the final result more accurate but interferes with 'spike_fk.001' (second vertebra from bottom up).

    2. Use a "Rig Proxy" method.

      • This makes the final result more accurate and keeps the IK Controllers intact, but it is laborious and manual.

Main Rig: Rigify Rig

Method: Create a Rigify Rig
  • Create a Meta-rig.

  • Reposition the Meta-rig correctly on the desired mesh.

    • Apply scale.

  • Create a Rigify Rig using this Meta-rig.

    • After that, the Meta-rig can be deleted, but it is highly recommended not to delete it as it may be useful for future modifications; just toggle its visibility.

  • Join the Rigify Rig with the Mesh using 'Armature Deform with Automatic Weights'.

  • Fix Weight Paint.

    • To see deformative Bones, I enable DEF in the Rigify Rig's Bone Collection and disable everything else. After Weight Painting, I revert visibility.

    • This can be done later, anytime.

Retargeting: Anywhere -> Rigify
  • Obtain a Source Rig for Retargeting.

    • Ideally, the Rig should have correct proportions for limbs.

      • I had problems with the Rig I made with the Mixamo interface.

      • Maybe take a generic Mixamo Rig and adapt it for more ~compatible limbs.

  • >  Use the Rokoko Workflow.

  • For Mixamo:

    • Compatibility:

      • I choose to solve the 1st and 2nd vertebrae problem of Rigify via Rokoko, instead of other methods.

    • Setup:

      • m:hips = torso

      • m:spine = -

      • m:spine1 = spine_fk.002

      • m:spine2 = spine_fk.003

      • m:neck = neck

      • m:head = head

      • m:leftShoulder = shoulder.L

      • m:rightShoulder = shoulder.R

      • ~the rest just associate the '_fk's.

    • With this setup, there are still differences from the Proxy method:

      • The Torso frame moves and rotates, while the Proxy method only moves.

  • For other places:

    • Compatibility:

      • I choose to solve the 1st and 2nd vertebrae problem of Rigify via Rokoko, instead of other methods.

  • Bake animations:

    • For FK:

      • No Bake is needed. Retargeting the animation already guarantees an animation driven only by FKs.

    • For IK:

      1. 'Bake IKs Rigify' method.

Retargeting: Anywhere -> Rigify; with functional IKs, via Retarget from a Source FK to a Target IK
  • Review:

    • There were issues with Rokoko Addon Retargeting presets, which don't save Custom Entries and seem incompatible between 2 different Mixamo Rigs, even if both have the same names.

    • The method works and can be interesting but involves a lot of manual work, often adapting FK behavior to IK or creating new Bones in the Source for coherent Retargeting.

    • It always gives the impression that a lot of polishing is needed for a satisfactory result.

  • Information:

  • Create a Rigify Rig.

    • I chose to solve the 1st and 2nd vertebrae problem via Rokoko, instead of other methods.

  • Obtain a Source Rig for Retargeting.

  • Use Rokoko workflow for Mixamo -> Rigify Retargeting +  Retarget from a Source FK to a Target IK.

    • I had problems Retargeting Mixamo hands to Rigify, since the Mixamo Rig has hands but they aren't animated and have no slots in Rokoko Addon's Retarget tab.

      • I tried giving the Mixamo Rig hands Keyframes to Retarget the Source hand FK to the Target hand IK.

        • This didn't work well, as the Target hand was offset after Retarget, but the idea works.

      • I had issues saving Retarget presets here, as Rokoko Addon apparently doesn't save Custom Entries.

    • I think the best option is to simulate controllers in the Source Rig:

Pseudo-Retargeting: Using Mixamo animations, with functional IKs, using a Rigify or Custom Rig
  • Review:

    • This method is inspired by 'Workflow: Using animations from anywhere, with functional IKs, using Retargeting, using a Rigify Rig, making IKs copy FK movements, with a Rig Proxy'.

    • This method only makes things more confusing and hinders Baked Action playback due to the large number of constraints between Rigify Rig and Proxy Rig, similar to the method it is inspired by.

    • I consider this method an improved version, simplifying the Workflow by removing redundancy of using a Rig Proxy AND  Retargeting with Rokoko Addon, since this method doesn't use Rokoko Addon.

  • Information:

    • Uses a generic 'Mixamo' / 'Rokoko Studio' Rig as Intermediate Rig, establishing Constraints to the Target Armature.

    • Advantages:

      • Removes the need to redo this method for each animation / removes Retargeting between Source and Target Armature with Rokoko Addon.

      • The bone names are fixed for a workflow, so new animations can just be placed in the Intermediate Rig, working without issues due to bone name matching.

      • Can be used for any Rig.

  • Create a Rigify Rig.

  • Obtain a Mixamo Rig.

  • Define Constraints between Mixamo Rig and Rigify Rig; Rigify Rig will copy Mixamo Rig movement.

    1. Method 1:

    2. Method 2:

      • Using 'Copy Transforms' on FKs and 'Child Of' on IKs, then Bake:

        • Summarized, this corresponds to 'Workflow: Using animations from anywhere, with functional IKs, using Retargeting, using a Rigify Rig, making IKs copy FK movements, with a Rig Proxy'.

  • Bake animations:

    • For FK:

      • No Bake needed. Retargeting ensures animation driven by FKs.

    • For IK:

      1. 'Bake IKs Rigify' method.

      2. 'Constraints IK->FK + Bake via Pose -> Bake Action' method.

Retargeting: Using animations from anywhere, with functional IKs, making IKs copy FK movements with a Rig Proxy
  • Review:

    • This Workflow is an overly complicated and unnecessary version of 'Workflow: Using animations from anywhere, with functional IKs, using Retargeting, making IKs receive FK Retarget'. A Rig Proxy is not needed.

    • This method only makes things confusing and hinders Baked Action playback due to many constraints between Rigify Rig and Proxy Rig.

    • This method is based on the poor strategy in this video: Retargeting: Retarget using Constraints and Bake between Target Armature and an Intermediate Rig .

  • Create a Rigify Rig.

  • Setup the Rigify Proxy Rig:

    • Append the 'Rig Proxy Basis Human' I made.

      • How it was made:

        • Use 'Game Rig Tools Addon' to create a Proxy Rig using the Rigify Rig.

          • Pick bones:

            • All '_fk' (green).

            • All 'spine_fk' (blue).

            • Torso (yellow cube).

            • Neck, Head.

        • Fix the Proxy Rig:

          • Fix parenting of lower torso region between 'spine_fk', 'spine_fk.001', and 'spine_fk.002'.

          • Make 'torso' a "child" of the Proxy Rig root bone movement ('spine_fk'), using 'Child Of' constraint on torso Bone.

          • Change 'Child Of' constraint settings to:

            • Disable all 3 rotation axes.

            • Check Set Inverse.

  • Use 'Game Rig Tools Addon' to make Rigify Rig follow Proxy Rig movement.

  • Obtain a Source Rig for Retargeting.

  • Use 'Rokoko Addon' to Retarget the animation  embedded in the Source Rig (e.g., Mixamo Rig) to the Target Rig (created Proxy Rig).

    • You can import 'Rokoko - Rig Mixamo to Rig Proxy Basic Human.json' so naming in the Addon is automatic.

  • Bake animations:

    • For FK:

      1. 'Bake via Pose -> Bake Action' method.

    • For IK:

      1. 'Bake IKs Rigify' method.

      2. 'Constraints IK->FK + Bake via Pose -> Bake Action' method.

Main Rig: Mixamo Rig

Pseudo-Retargeting: Using Mixamo animations with functional IKs
  • Using the Mixamo website to create the initial Armature:

  • Import:

    • Mixamo: Fixing import problems of some Mixamo models .

      • The Retarget Helper addon is used.

    • I had many  issues when applying 'Apply Scale' to the Mixamo Rig or Mesh. This creates several problems with the mesh and rig origin points, but the biggest issue is with animations, which have very high and disproportionate parameters, only making sense if default disproportionate scales are used.

  • Using the Mixamo Addon to generate IK and controllers:

    • Mixamo Rig comes without any controllers but can use the Mixamo Addon  to create controllers for the Rigs. Addon options are in the right-hand panel of the 3D View.

    • Although Retargeting other Armatures to this Armature is possible, by default it is limited to Mixamo animations.

  • Step-by-step:

    • To have a character with multiple animations, you only need a T-Pose Rig with the Mesh internally, serving as a base .

      • The T-Pose animation can be deleted without issues.

    • After importing the animation, the instantiated Rig/Mesh can be deleted, since the only useful data is the animation it carries.

    • Files with new Mixamo animations can be imported. These files may contain Rigs and/or Meshes, but it doesn't matter, as the only important data is the animation included with the file.

    • To add a new animation, simply click the T-Pose Rig and add the downloaded animation to it.

      • This works because all animations reference the same Bones, as all Mixamo Bones have the same name regardless of the character.

    • If the character has a texture, it is important to Export the file to glTF at least once, so that textures stored internally in the .blend file are 'spit out' to the File System.

  • ~Bake the animations?